/*
 * AbstractTelefoneHandler.java
 * Versão: 1.0
 * Data de Criação: 17/09/2014
 * Copyright(c) Felipe Secato.  Todos os direitos reservados.
 */
package contatos.patterns.chainofresponsbility;

import contatos.model.Contato;

/**
 * Classe abstrata usada no padrão chain of responsiblity
 * para tratamento do telefone dos contatos (identificar UF e OPERADORA)
 * @author felipe
 * @see TelefoneHandler
 */
public abstract class AbstractTelefoneHandler implements TelefoneHandler{

    private TelefoneHandler next;
  
    @Override
    public void setNext(TelefoneHandler next) {
        this.next = next;
    }

    @Override
    public void handleRequest(Contato pessoa) {
        if (accept(pessoa.getTelefone())) {
            doHandle(pessoa);
        } else if (this.next != null) {
            this.next.handleRequest(pessoa);
        }
    }
    
    public abstract boolean accept(String telefone);

    public abstract void doHandle(Contato pessoa);


}
